#ifndef DAHENG_CONFIG_OBJ_H
#define DAHENG_CONFIG_OBJ_H

#include "../Base/Config.hpp"
#include "../inc/GxIAPI.h"

class DahengConfig : public BaseConfig
{
  private:
    friend class DahengCamera;
    GX_DEV_HANDLE handle;
    DahengConfig(GX_DEV_HANDLE obj);

    std::pair<long/*max*/,long/*min*/> GetIntRange(int64_t item);
    std::vector<std::string> GetEnumRange(int64_t item);
    std::pair<double/*max*/,double/*min*/> GetDoubleRange(int64_t item);
    long GetStrRange(int64_t item);
  public:
    virtual std::vector<item> ItemList() override;
    virtual bool Get(int id,std::string& value) override;
    virtual bool Get(int id,long& value) override;
    virtual bool Get(int id,double& value) override;
    virtual bool Get(int id,bool& value) override;
    virtual bool Set(int id,const std::string& value) override;
    virtual bool Set(int id,const long& value) override;
    virtual bool Set(int id,const double& value) override;
    virtual bool Set(int id,const bool& value) override;
};

#endif
